/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:张熳
 * Date:2025-08-09
 * Time:23:31
 */
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        //99乘法表
        int sum = 1;
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                sum = i * j;
                System.out.printf("%d*%d=%-2d ",i,j,sum);
            }
            System.out.println();
        }
    }
    public static void main9(String[] args) {
        //求阶乘
        int sum = 0;
        for (int j = 1; j <= 5; j++) {
            int ret = 1;
            for (int i = 1; i <= j; i++) {
                ret *= i;
            }
            sum += ret;
        }
        System.out.println(sum);//153
    }
    public static void main8(String[] args) {
        //求一个整数，在内存中存储时，二进制1的个数
        //思路：n&(n-1)  例如，当n=7时，二进制数为0111，7&6=0111&0110=0110，6&5=0110&0101=0100，4&3=0100&0011=0000
        //通过此过程可知，每&一次二进制中的1就少一个，直到全为0，&的次数刚好对应整数n的二进制中1的个数
        int n = 7;
        int count = 0;
        while (n != 0){
            n = n & (n-1);
            count++;
        }
        System.out.println(count);//3
    }
    public static void main7(String[] args) {
        //给定两个数，求这两个数的最大公约数
        //例如：两个数为24，18;思路：先将 24/18=1，24%18=6，再次 18/6=3，18%6=0，就说明它们的最大公约数是6,即b的值
        int a = 24;
        int b = 18;
        int c = a % b;
        while (c != 0){
            a = b;
            b = c;
            c = a % b;
        }
        System.out.println(b);//6
    }
    public static void main6(String[] args) {
        //计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值
        double sum = 0;
        int flag = 1;
        for (int i = 1; i <= 100; i++) {
            sum += 1.0 / i * flag;
            flag = -flag;
        }
        System.out.println(sum);
    }
    public static void main5(String[] args) {
        //打印水仙花数
        for (int i = 0; i < 1000000; i++) {
            int count = 0;
            int tmp = i;
            while (tmp != 0){
                count++;
                tmp /= 10;
            }
            tmp = i;
            int sum = 0;
            while (tmp != 0){
                sum += Math.pow(tmp%10,count);
                tmp /= 10;
            }
            if (sum == i){
                System.out.print(i+" ");
            }
        }
        System.out.println();
    }
    public static void main4(String[] args) {
        //打印x图形
        //思路：想要打印x图形，只需要两个对角线打印*，即i=j这一条对角线，和i+j=n-1这一条对角线
        //例如：有n=4行，需要在0=0，1=1，2=2，3=3四个位置处打印*，以及在0+3=3，1+2=3，2+1=3，3+0四个位置处打印*
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入行数:");
        while (scanner.hasNextInt()){
            int n = scanner.nextInt();
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    if (i == j || i+j == (n-1)){
                        System.out.print("*");//记得使用print()而不是println()
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();//每行结束后换行
            }
        }
    }

    public static void main3(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()){
            int n = scanner.nextInt();
            System.out.println(n);
        }
    }
    public static void main2(String[] args) {
        //给定一个数字，判定一个数字是否是素数  素数：2，3，5，7，11……
        //思路：如果这个数字n不是素数，那么它的开根号一定小于等于最小因数i且%i==0，例如：9，最小因数是3，3<根号9，且9%3==0
        int n = 7;
        if (n <= 1){
            System.out.println("不是素数，也不是合数!");
            return;
        }
        double num = Math.sqrt(n);
        int i = 2;//从最小因数开始
        for (; i <= num; i++) {
            if (n % i == 0){
                System.out.println(n+"是合数!");
                break;
            }
        }
        if (i > num){
            System.out.println(n+"是素数!");
        }
    }
    public static void main1(String[] args) {
        //编写程序数一下1~100的所有整数中出现多少个数字9
        //思路：如果9在个位数：就%10，例如，19%10=9；如果9在十位数：就/10，例如，92/10=9…………
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 10 == 9){
                count++;
            }
            if (i / 10 == 9){
                count++;
            }
        }
        System.out.println(count);//20
    }
}
//